package partThree.homeWork;

import com.sun.jdi.event.StepEvent;

/**
 * 第二题：编程获取两个指定字符串中的最大相同子串。
 *
 */
public class NumTwo {
    public static void main(String[] args) {
//    1.声明并定义两个字符串
        String str1 = "asdafghjka";
        String str2 = "aaasdfg";
//        2.定义一下用来记录的变量
        int maxCount = 0;    // 用来记录共同字符串的最大长度变量
        String maxStr = "";  // 用来记录共同字符串最大字符串
        String subStr = "";  // 用来记录切割较短字符后的字符
//        3定义两个循环，用来切割字符串，获取最大相同字符串
//        3.1第一个循环是是记录切割较短字符串的 起始位置，因此下标是从 0  到 字符串长度。
        for (int beginIndex = 0; beginIndex < str2.length(); beginIndex++) {
//        3.2第二个循环是记录切割较短字符串的  终止位置，因此下标是从 上一个循环的起始位置  到 字符串长度。
            for (int endIndex = beginIndex+1; endIndex < str2.length()-1; endIndex++) {
//            3.3 记录切分后的字符串。
                subStr = str2.substring(beginIndex,endIndex);
//            3.4 如果切分后的字符串中与str1 较长字符串有相同字符串
//            同时其长度大于最长字符的长度  ，首次是零，就获取其最长相同字符串；当有更长的相同字符串时，就替换之前较短的相同字符串。
                if (str1.contains(subStr) && subStr.length()> maxCount) {
                    maxCount = subStr.length();
                    maxStr = subStr;
                }
            }
        }
        System.out.println(maxCount);
        System.out.println(maxStr);
    }
}
